package com.hong.spring.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Auther: csh
 * @Date: 2020/7/15 16:13
 * @Description:自定义注解
 *
 * @Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中，在class字节码文件中不包含
 * @Retention(RetentionPolicy.CLASS)    // 默认的保留策略，注解会在class字节码文件中存在，但运行时无法获得，
 * @Retention(RetentionPolicy.RUNTIME)  // 注解会在class字节码文件中存在，在运行时可以通过反射获取到
 *
 *
 * @Target(ElementType.TYPE)                             //接口、类、枚举、注解
 * @Target(ElementType.FIELD)                            //字段、枚举的常量
 * @Target(ElementType.METHOD)                           //方法
 * @Target(ElementType.PARAMETER)                        //方法参数
 * @Target(ElementType.CONSTRUCTOR)                      //构造函数
 * @Target(ElementType.LOCAL_VARIABLE)                   //局部变量
 * @Target(ElementType.ANNOTATION_TYPE)                  //注解
 * @Target(ElementType.PACKAGE)                          //包
 */
//声明注解的保留期限
@Retention(RetentionPolicy.RUNTIME)
//声明可以使用该注解的目标类型
@Target(ElementType.METHOD)
public @interface NeedTest {
    //声明注解的成员
    boolean value() default true;
}
